package com.zjcloud.jwgl.domain;

import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zjcloud.common.annotation.Excel;
import com.zjcloud.common.core.domain.BaseEntity;

/**
 * 课程信息对象 sc_course
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public class ScCourse extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 课程ID */
    private Long id;

    /** 课程编码 */
    @Excel(name = "课程编码")
    private String courseCode;

    /** 课程名称 */
    @Excel(name = "课程名称")
    private String courseName;

    /** 学期ID */
    @Excel(name = "学期ID")
    private Long semesterId;

    /** 学期名称 */
    @Excel(name = "学期名称")
    private String semesterName;

    /** 学科ID */
    @Excel(name = "学科ID")
    private Long subjectId;

    /** 学科名称 */
    @Excel(name = "学科名称")
    private String subjectName;

    /** 年级ID */
    @Excel(name = "年级ID")
    private Long gradeId;

    /** 年级名称 */
    @Excel(name = "年级名称")
    private String gradeName;

    /** 班级ID */
    @Excel(name = "班级ID")
    private Long classId;

    /** 班级名称 */
    @Excel(name = "班级名称")
    private String className;

    /** 主讲教师ID */
    @Excel(name = "主讲教师ID")
    private Long mainTeacherId;

    /** 主讲教师姓名 */
    @Excel(name = "主讲教师姓名")
    private String mainTeacherName;

    /** 协助教师ID */
    @Excel(name = "协助教师ID")
    private Long assistantTeacherId;

    /** 协助教师姓名 */
    @Excel(name = "协助教师姓名")
    private String assistantTeacherName;

    /** 每周课时数 */
    @Excel(name = "每周课时数")
    private Integer weeklyPeriods;

    /** 总课时数 */
    @Excel(name = "总课时数")
    private Integer totalPeriods;

    /** 已排课时数 */
    @Excel(name = "已排课时数")
    private Integer scheduledPeriods;

    /** 课程类型(REQUIRED必修 ELECTIVE选修 ACTIVITY活动 PRACTICE实践) */
    @Excel(name = "课程类型", readConverterExp = "REQUIRED=必修,ELECTIVE=选修,ACTIVITY=活动,PRACTICE=实践")
    private String courseType;

    /** 课程性质(THEORY理论 PRACTICE实践 THEORY_PRACTICE理论实践) */
    @Excel(name = "课程性质", readConverterExp = "THEORY=理论,PRACTICE=实践,THEORY_PRACTICE=理论实践")
    private String courseNature;

    /** 学分 */
    @Excel(name = "学分")
    private BigDecimal credits;

    /** 课程难度(1-10) */
    @Excel(name = "课程难度")
    private Integer difficulty;

    /** 优先级(1-10) */
    @Excel(name = "优先级")
    private Integer priority;

    /** 是否需要连排(1是 0否) */
    @Excel(name = "是否需要连排", readConverterExp = "1=是,0=否")
    private String needConsecutive;

    /** 连排节数 */
    @Excel(name = "连排节数")
    private Integer consecutivePeriods;

    /** 教室类型要求 */
    @Excel(name = "教室类型要求")
    private String classroomTypeRequired;

    /** 特殊设备要求 */
    @Excel(name = "特殊设备要求")
    private String equipmentRequired;

    /** 最小教室容量 */
    @Excel(name = "最小教室容量")
    private Integer minClassroomCapacity;

    /** 时间偏好 */
    @Excel(name = "时间偏好")
    private String timePreference;

    /** 排课状态(PENDING待排课 PARTIAL部分排课 COMPLETED完成排课 CONFLICT存在冲突) */
    @Excel(name = "排课状态", readConverterExp = "PENDING=待排课,PARTIAL=部分排课,COMPLETED=完成排课,CONFLICT=存在冲突")
    private String scheduleStatus;

    /** 状态(1启用 0禁用) */
    @Excel(name = "状态", readConverterExp = "1=启用,0=禁用")
    private String status;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setCourseCode(String courseCode) 
    {
        this.courseCode = courseCode;
    }

    public String getCourseCode() 
    {
        return courseCode;
    }
    public void setCourseName(String courseName) 
    {
        this.courseName = courseName;
    }

    public String getCourseName() 
    {
        return courseName;
    }
    public void setSemesterId(Long semesterId) 
    {
        this.semesterId = semesterId;
    }

    public Long getSemesterId() 
    {
        return semesterId;
    }
    public void setSemesterName(String semesterName) 
    {
        this.semesterName = semesterName;
    }

    public String getSemesterName() 
    {
        return semesterName;
    }
    public void setSubjectId(Long subjectId) 
    {
        this.subjectId = subjectId;
    }

    public Long getSubjectId() 
    {
        return subjectId;
    }
    public void setSubjectName(String subjectName) 
    {
        this.subjectName = subjectName;
    }

    public String getSubjectName() 
    {
        return subjectName;
    }
    public void setGradeId(Long gradeId) 
    {
        this.gradeId = gradeId;
    }

    public Long getGradeId() 
    {
        return gradeId;
    }
    public void setGradeName(String gradeName) 
    {
        this.gradeName = gradeName;
    }

    public String getGradeName() 
    {
        return gradeName;
    }
    public void setClassId(Long classId) 
    {
        this.classId = classId;
    }

    public Long getClassId() 
    {
        return classId;
    }
    public void setClassName(String className) 
    {
        this.className = className;
    }

    public String getClassName() 
    {
        return className;
    }
    public void setMainTeacherId(Long mainTeacherId) 
    {
        this.mainTeacherId = mainTeacherId;
    }

    public Long getMainTeacherId() 
    {
        return mainTeacherId;
    }
    public void setMainTeacherName(String mainTeacherName) 
    {
        this.mainTeacherName = mainTeacherName;
    }

    public String getMainTeacherName() 
    {
        return mainTeacherName;
    }
    public void setAssistantTeacherId(Long assistantTeacherId) 
    {
        this.assistantTeacherId = assistantTeacherId;
    }

    public Long getAssistantTeacherId() 
    {
        return assistantTeacherId;
    }
    public void setAssistantTeacherName(String assistantTeacherName) 
    {
        this.assistantTeacherName = assistantTeacherName;
    }

    public String getAssistantTeacherName() 
    {
        return assistantTeacherName;
    }
    public void setWeeklyPeriods(Integer weeklyPeriods) 
    {
        this.weeklyPeriods = weeklyPeriods;
    }

    public Integer getWeeklyPeriods() 
    {
        return weeklyPeriods;
    }
    public void setTotalPeriods(Integer totalPeriods) 
    {
        this.totalPeriods = totalPeriods;
    }

    public Integer getTotalPeriods() 
    {
        return totalPeriods;
    }
    public void setScheduledPeriods(Integer scheduledPeriods) 
    {
        this.scheduledPeriods = scheduledPeriods;
    }

    public Integer getScheduledPeriods() 
    {
        return scheduledPeriods;
    }
    public void setCourseType(String courseType) 
    {
        this.courseType = courseType;
    }

    public String getCourseType() 
    {
        return courseType;
    }
    public void setCourseNature(String courseNature) 
    {
        this.courseNature = courseNature;
    }

    public String getCourseNature() 
    {
        return courseNature;
    }
    public void setCredits(BigDecimal credits) 
    {
        this.credits = credits;
    }

    public BigDecimal getCredits() 
    {
        return credits;
    }
    public void setDifficulty(Integer difficulty) 
    {
        this.difficulty = difficulty;
    }

    public Integer getDifficulty() 
    {
        return difficulty;
    }
    public void setPriority(Integer priority) 
    {
        this.priority = priority;
    }

    public Integer getPriority() 
    {
        return priority;
    }
    public void setNeedConsecutive(String needConsecutive) 
    {
        this.needConsecutive = needConsecutive;
    }

    public String getNeedConsecutive() 
    {
        return needConsecutive;
    }
    public void setConsecutivePeriods(Integer consecutivePeriods) 
    {
        this.consecutivePeriods = consecutivePeriods;
    }

    public Integer getConsecutivePeriods() 
    {
        return consecutivePeriods;
    }
    public void setClassroomTypeRequired(String classroomTypeRequired) 
    {
        this.classroomTypeRequired = classroomTypeRequired;
    }

    public String getClassroomTypeRequired() 
    {
        return classroomTypeRequired;
    }
    public void setEquipmentRequired(String equipmentRequired) 
    {
        this.equipmentRequired = equipmentRequired;
    }

    public String getEquipmentRequired() 
    {
        return equipmentRequired;
    }
    public void setMinClassroomCapacity(Integer minClassroomCapacity) 
    {
        this.minClassroomCapacity = minClassroomCapacity;
    }

    public Integer getMinClassroomCapacity() 
    {
        return minClassroomCapacity;
    }
    public void setTimePreference(String timePreference) 
    {
        this.timePreference = timePreference;
    }

    public String getTimePreference() 
    {
        return timePreference;
    }
    public void setScheduleStatus(String scheduleStatus) 
    {
        this.scheduleStatus = scheduleStatus;
    }

    public String getScheduleStatus() 
    {
        return scheduleStatus;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("courseCode", getCourseCode())
            .append("courseName", getCourseName())
            .append("semesterId", getSemesterId())
            .append("semesterName", getSemesterName())
            .append("subjectId", getSubjectId())
            .append("subjectName", getSubjectName())
            .append("gradeId", getGradeId())
            .append("gradeName", getGradeName())
            .append("classId", getClassId())
            .append("className", getClassName())
            .append("mainTeacherId", getMainTeacherId())
            .append("mainTeacherName", getMainTeacherName())
            .append("assistantTeacherId", getAssistantTeacherId())
            .append("assistantTeacherName", getAssistantTeacherName())
            .append("weeklyPeriods", getWeeklyPeriods())
            .append("totalPeriods", getTotalPeriods())
            .append("scheduledPeriods", getScheduledPeriods())
            .append("courseType", getCourseType())
            .append("courseNature", getCourseNature())
            .append("credits", getCredits())
            .append("difficulty", getDifficulty())
            .append("priority", getPriority())
            .append("needConsecutive", getNeedConsecutive())
            .append("consecutivePeriods", getConsecutivePeriods())
            .append("classroomTypeRequired", getClassroomTypeRequired())
            .append("equipmentRequired", getEquipmentRequired())
            .append("minClassroomCapacity", getMinClassroomCapacity())
            .append("timePreference", getTimePreference())
            .append("scheduleStatus", getScheduleStatus())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}